/*
* http://www.baidu.con
* 1.用户通过浏览器发送一个http的请求到指定的主机
* 2.服务器接收到该请求，队请求进行分析和处理
* 3.服务器处理完成后，返回对应的数据到用户机器
* 4.浏览器接收到服务器返回的数据分析处理
* */

// 搭建一个http的服务器，用于处理用户发送的http请求

// 加载一个http模块
var http = require('http')

// 通过http模块下的createServer创建一个返回web服务器对象
var server = http.createServer(function(){
    console.log('111111111')                // createServer-----当有客户端请求时触发的回调函数，和下面的 request 事件一样
});

// .listen(post, [hostname], [backlog], [callback])
// post：监听的端口（不设置则自动分配）      hostname：主机名        backlog：连接等待队列的最大长度

server.on('error', function(err){           // error 事件-----监听出现错误时
    console.log(err)                        // 打印错误
})

server.on('listening', function () {        // listening 事件-----监听成功时
    console.log('listening..........')
})

server.on('request', function (req, res) {  // request 事件-------当有客户端发送请求到该主机和端口时
    console.log('有客户端请求了')

    // console.log(req)                                     // req--request---请求信息
    // console.log(req.httpVersion)                         // req.httpVersion----使用的http协议版本
    // console.log(req.headers)                             // req.headers----请求头信息中的数据
    // console.log(req.url)                                 // req.url-----请求的地址
    // console.log(req.method)                              // req.method----请求方式


    res.setHeader('hello', 'hi')                            // response.setHeader(name, value)---设置头部信息------貌似不推荐？？？？？
    res.writeHead(200,'yes',{                               // res.writeHead(状态码, [描述], )----设置返回头信息---一般写在res.write前面，只能使用一次
        'content-type':'text/html;charset=utf-8'              // 文档类型声明：html
        // 'content-type':'text/plain'                              // 文档类型声明：plain---直接转译
    });
    res.write('<h1>hello</h1>');                            // res.write(chunk, [encoding])----服务端向客户端发送数据
    res.end('<h1>你好</h1>');                               // res.end(chunk, [encoding])------完成信息发送后调用，告诉服务器数据已发送完成
                                                                // 可将要发送的数据写在end()里，浏览器会直接先调用write
})

server.listen(8090, 'localhost');

// console.log(server.address())            // address()---打印端口信息

